跳到主要内容

集群配套组件

GBase 8s集群软件中除包括支持的四种集群形态组件SSC、HAC、RHAC和ER外,还包含配合集群使用的其他组件:连接管理器CM、浮动IP支持、读写分离组件、集群守护程序、会话保持CCP。下面进行一一介绍。

连接管理器CM

连接管理器CM(Connection Manager)是GBase 8s客户端自带的配合高可用集群使用的用于管理应用客户端对GBase 8s进行连接访问的组件。具备基于SLA的连接管理、负载均衡和机器故障发现与自动切换功能。可以实现的功能如下:

  1. 集群自动故障切换;
  2. 基于规则的连接转发和负载均衡;
  3. 代理服务;
  4. 控制高优先级应用的故障切换连主。

SSC集群自身不能进行节点故障切换,需要配置连接管理器(CM)来实现该功能。当DRAUTO=3时,由CM来负责集群节点切换,当主节点实例出现故障时,CM向辅节点发出指令,辅节点切换为主节点,继续对外提供服务,当故障节点再次启动后会变为辅节点。

当主节点网络故障或磁盘连接故障时,CM会判定主节点已失联,向辅节点发出指令,辅节点切换为主节点,继续对外提供服务。当网络或磁盘连接恢复后,会出现双主情况,但原主节点已失去对外提供服务的能力,此时重启原主节点后会自动变为辅节点。

HDR集群自身可实现节点故障切换功能,也可通过CM纳管来实现节点故障切换,可通过DRAUTO参数来设置。

当DRAUTO值为0 时,发生主节点或集群网络故障,辅节点不进行故障切换,等待主节点恢复正常后,集群才能正常对外提供服务。

当DRAUTO值为1时,发生主节点或集群网络故障,辅节点自动切换为主节点,集群继续对外提供服务,当原主节点恢复正常后,其状态仍为主节点。新主机节点自动关闭,实例重启后状态恢复为辅节点,即集群状态恢复后主、辅节点角色未发生改变。

当DRAUTO值为2时,发生主节点或集群网络故障,辅节点切换为主节点,当原主节点恢复正常后,状态变更为辅节点。即集群状态恢复后主、辅节点角色发生了改变。

当DRAUTO值为3时,发生主节点或集群网络故障,集群节点的故障切换由连接管理器(CM)负责,当连接管理器发现集群异常后,根据自身规则设置,会向辅节点发出切换指令,辅节点切换为主节点,当原主节点恢复正常后,状态变更为辅节点。即集群状态恢复后主、辅节点角色发生了改变。

RHAC集群自身也不能进行节点故障切换,需要配置连接管理器(CM)来实现该功能。当DRAUTO=3时,由CM来负责集群节点切换,当主节点实例出现故障时,CM向辅节点发出指令,辅节点切换为主节点,继续对外提供服务,当故障节点再次启动后会变为辅节点。

当主节点网络故障或网络延时大于预期值时,CM会判定主节点已失联,向辅节点发出指令,辅节点切换为主节点,继续对外提供服务。当网络恢复后,原主节点自动关闭,重新启动后原主节点会自动变为辅节点。

另外,连接管理器CM本身支持冗余部署,可单独部署,也可以与数据库或者应用服务器上部署。其部署示意图如下所示:

1740979475625

浮动IP支持

GBase 8s数据库集群支持浮动IP(也称虚拟IP或者VIP)提高了数据库服务高可用性和灵活性。在数据库集群中,浮动IP允许将一个虚拟IP地址动态地分配给不同的数据库实例,这样在主数据库实例发生故障时,浮动IP可以迅速切换到备用实例上,从而减少服务中断时间。

GBase8s 支持SSC、HAC、RHAC三种经典的数据库集群方案,这三种方案里面都是通过CM来实现故障转移和应用请求转发。通常情况下应用访问数据库集群的之后都是通过配置文件,配置文件里面记录两个CM或多个CM的IP和Port信息。

但个别应用程序或框架如果不支持在JDBC URL中设置配置文件,则客户端应用程序可以通过浮动IP连接到数据库集群,目前集群软件中的浮动IP组件仅支持两节点的SSC、HAC或者RHAC集群,暂不支持两节点以上的多节点集群。

读写分离组件

GBase 8s集群软件中的读写分离组件实现将SQL按预定规则下发到数据库集群主节点或者从节点,配合GBase 8s数据库集群来满足读写分离要求的使用场景。

GBase 8s读写分离组件是通过JDBC接口实现的,在对数据库集群进行访问时,JDBC能够自动实现读写操作自动分离特性。支持事务级的负载均衡,以及自定义方式分发请求。

开启读写分离功能后数据库连接创建流程如下:

  1. 用户发起数据库连接请求;
  2. 接口(JDBC)根据服务器配置创建主连接;
  3. 接口内部根据从连接配置信息创建维护从连接信息;
  4. 接口响应用户数据库连接创建成功。

接口在备库上创建的连接是读写分离集群自动创建的;对用户而言,就是在主库上创建了一个数据库连接。下图以配置了两个备库的读写集群为例,说明了读写分离集群的连接创建流程。

1741065520746

读写分离组件支持事务级读写分离功能以及强制分发规则。强制分发规则即通过在SQL上指定规则强制该SQL在某个节点执行。

1741065843284

事务级读写分离功能即如果未配置强制分发规则,则将按照事务优先原则自动判断SQL的分发处理。当连接为自动提交事务设置时,所有select语句(不包括select for update)发送从节点,其他SQL发送主节点;当连接为手动提交事务设置时,遇到第一条非 select 语句后,从该语句开始后续所有SQL均发送到主节点,遇到非 select 语句之前所有的 select 均发送到从节点,基于此保证事务的一致性。

1741066033947

集群守护HAC_Alline

集群守护程序HAC_Alline主要是用来对GBase 8s HAC集群切换异常场景,如在异常关机、异常掉电、网络中断等场景发生导致集群关系异常后,实现自动化修复从而保障集群能够持续稳定的自动化运行。

HAC_Alline的工作原理和覆盖场景如下:

  1. HAC集群整体启停:启动集群时先启动主节点,再启动备节点;关闭集群时先停止备节点,再停止主节点。
  2. HAC备节点升主处理:当主节点故障时,如果此时网络不可用且备节点正常,则关闭当前主节点数据库服务,再将备节点切换为主节点。
  3. HAC异常宕机处理:异常宕机情况根据应用网络连接情况分为网络正常和网络异常两种场景。如果主节点网络异常,备节点网络正常,则关闭主节点数据库服务,完成备节点切成主节点操作。如果主备节点网络都正常,两节点中其中一个节点正常,则在另一个节点直接启动数据库服务;如果两节点都异常,则先判断主节点,再按照上诉规则1启动数据库服务。

  1. 备节点启动异常处理:如果备节点启动时长时间停留在FastRecovery状态,且主节点正常,则根据该状态持续时长,如果超过阈值则重建备节点和主节点的集群关系;反之如果在阈值时长内备节点启动成功则不做任何特殊处理。

会话保持CCP

为了解决由服务器节点、存储系统或者网络故障等原因引起的应用连接错误或者超时从而导致用户会话中断的问题,会话保持程序CCP使得数据库会话中断后能够自动恢复,确保会话在异常情况发生时仍具备连续性能力,从而使得用户和应用程序几乎感觉不到中断的发生。

这种恢复机制在应用的底层自动执行,使得任何中断对用户来说都仅仅是一个轻微的延迟。即CCP在连接中断发生时,能够保持会话的一个连续性,对应用程序屏蔽掉数据库或者集群节点的中断异常,使得应用程序在使用上有更好的用户体验。

CCP的主要技术特点有:

  1. GBase 8s集群软件中独立于数据库和应用程序之外的集群组件;
  2. 部署容易,操作简单;
  3. 能够很大程度上屏蔽数据库的会话中断,并恢复会话不需要用户重新建立连接就能继续执行后续的业务。

CCP整体的部署关系如下图示意图所示,会话保持工具可以部署于任意一台机器上。使用时作为用户和server之间消息传递的中间人,它与用户和server之间的数据交互通过IP和端口号进行传递。

1741076720455